/*
 * Transition.h
 *
 * Abstract Base class for all transitions with the
 * state machine
 *
 * Author: Zachary Masiello
 * Author: Peter-John Rowe
 */

#ifndef TRANSITION_H_
#define TRANSITION_H_

#include "IEvent.h"
#include "IState.h"
#include <stddef.h>

class Cyclometer;

class Transition {
protected:
	int eventID;
	IState* nextState;
	Cyclometer* context;
public:
	virtual ~Transition();
	int getEventID();
	virtual IState* accept() = 0;
	virtual bool guard() = 0;
	virtual void action() = 0;
};

#endif /* TRANSITION_H_ */
